package com.hk.housekeeping.mapper;

import com.hk.housekeeping.entity.Manager;
import com.hk.housekeeping.entity.ManagerInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ManagerMapper {
    //登录（匹配管理者表的一条记录，返回该管理者的id）
    int selectManager(@Param("username") String username, @Param("password") String password);

    //删除一条管理员的信息（假删除），级联删除管理员的登录信息表
    int deleteManagerInfoByMid(@Param("mid") int mid);
    int deleteManagerAndInfo(@Param("mid") int mid);

    //注册(分别把数据添加到三个表)
    //先添加用户密码表，返回mid（用于联系管理员信息表）
    int insertManager(@Param("manager") Manager manager);
    //再添加管理员信息表，返回id（用于联系与权限表的第三张表）
    int insertManagerInfo(@Param("managerInfo") ManagerInfo managerInfo);
    //再添加到权限与管理员的第三张表
    int insertManagerAndPermission(@Param("id") int id, @Param("list") List<Integer> list);

    //编译（分别对三个表进行有序的删除和重新插入操作）
    //1、首先进行假删除（假删除管理员信息表、登录表、权限表）
    int deleteManagerInfo(@Param("id") int id);
    int deleteManagerPermission(@Param("id") int id);
    //2、重新插入数据到三个表
    //2.1其中登录表的用户名有唯一约束，不作为修改内容，只修改密码（传递mid，mid没有改变）
    //2.2其中manager_info的修改使用方法insertManagerInfo()
    //2.3其中权限表的修改使用方法insertManagerAndPermission()
    int updateManagerPassword(@Param("mid") int mid, @Param("password") String password);

    //分页展示
    List<ManagerInfo> selectManagerPage(@Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
    //查询总条数
    int selectTotalCount();
}
